/**
 * @author wn
 * @date 2022/07/12 16:40:08
 * @description:  定义校验规则提供给vee-validate组件使用
 * \w  ([0-9a-zA-Z])
 * \d  [0-9]
 */

import { userAccountCheck } from '@/network/user'

export default {
	/*
     value是将来使用该规则的表单元素v-model的值
	   1. 必填
	   2. 6-20个字符，需要以字母开头
	   如何反馈校验成功还是失败，返回true才是成功，其他情况失败，返回失败原因--String。

		 (value,{form})  可以在此处规则处 验证其他form.name 的规则
  */

	// 校验用户名
	account(value) {
		if (!value) return '请输入用户名'
		if (!/^[a-zA-Z]\w{5,19}$/.test(value)) return '字母开头且6-20个字符'
		return true
	},
	// 校验用户是否存在
	async accountApi(value) {
		if (!value) return '请输入用户名'
		if (!/^[a-zA-Z]\w{5,19}$/.test(value)) return '字母开头且6-20个字符'
		// 服务端校验
		const { result } = await userAccountCheck(value)
		if (result.valid) return '用户名已存在'
		return true
	},
	// 密码
	password(value) {
		if (!value) return '请输入密码'
		if (!/^\w{6,24}$/.test(value)) return '密码是6-24个字符'
		return true
	},
	// 再次输入密码是否一直
	rePassword(value, { form }) {
		if (!value) return '请输入密码'
		if (!/^\w{6,24}$/.test(value)) return '密码是6-24个字符'
		// 校验密码是否一致  form表单数据对象
		if (value !== form.password) return '两次输入的密码不一致'
		return true
	},
	// 手机号
	mobile(value) {
		if (!value) return '请输入手机号'
		if (!/^1[3-9]\d{9}$/.test(value)) return '请输入合法手机号'
		return true
	},
	// 短信验证码
	code(value) {
		if (!value) return '请输入验证码'
		if (!/^\d{6}$/.test(value)) return '验证码是6个数字'
		return true
	},
	// 是否统一勾选框
	isAgree(value) {
		if (!value) return '请勾选同意用户协议'
		return true
	},
	// 输入收货人
	receiver(value) {
		if (!value) return '请输入收货人'
		return true
	},
	// 输入地址
	address(value) {
		if (!value) return '请输入地址'
		return true
	},
	// 输入邮政编码
	postalCode(value) {
		if (!value) return '请输入邮政编码'
		if (!/^\d{6}$/.test(value)) return '邮政编码格式不合法'
		return true
	},
	// 输入地址标签
	addressTags(value) {
		if (!value) return '请输入地址标签'
		return true
	},
	// 输入配送地址 value 是@change事件中的 值 v-->emit('change', address)
	fullLocation(value) {
		if (!value) return '请输入配送地址'
		return true
	},
}
